/*
 * 练习19：写一个类，他接受一个可变参数的String数组，
 * 验证：你可以向该方法传递一个用逗号分隔的String列表，或是一个String[]. 
 */
package chapter5_InitializationAndCleanUp;
import publicLibs.p;

public class E19_VarArgsTest {
	// VarArgs First Form.
	public static void varArgs(String... args){
		for(String s:args){
			p.pNoln(s);
		}
		p.p();
	}
	
	// VarArgs Second Form.
	public static void varArgs(Integer... args){
		for(int i:args){
			p.pNoln(i);
		}
		p.p();
	}
		
	// VarArgs Third Form.
	// The variable argument type String of the method varArgs-- 
	// --must be the last parameter
	// !!! 所以不可以这样！ 
	// public static void varArgs(String... args1,Integer[] args2){}
	
	// VarArgs Fourth Form.
	public static void varArgs(String s, Integer... args){
		p.p("The String: " + s);
		p.pNoln("The Integer: ");
		for(int i:args){
			p.pNoln(i);
		}
	}
	
	public static void main(String[] args) {
		// 除非FirstForm 声明为 (String... args) 形式，否则下面的句子将报错。
		// 下面的句子因为使用的是 (String[] args) 形式，会报错。
		// 声明为 (String... args) 形式，便不用首先显式地编写一个数组，然后才能传递这个数组给方法了
		varArgs("One", "Two", "Three", "Four");
		varArgs( new String[]{"One1", "Two2", "Three3", "Four4"} );
		
		varArgs(1, 4, 5, 156, 335);
		varArgs("Hello", 32, 25, 66, 88);
		
	}

}
